//10．编写一个程序，通过一个函数指针数组实现菜单。
//例如，选择菜单中的a，将激活由该数组第1个元素指向的函数。
#include <stdio.h>
#include <mylib.h>
#include <string.h>

void menua();

void menub();

void menuc();
static char choice_menu();

int main(void) {
    char sel;
    void (*pm[3])()={menua, menub, menuc};
    while ((sel=choice_menu())!='q'){
        switch (sel){
            case 'a':
                pm[0]();
                break;
            case 'b':
                pm[1]();
                break;
            case 'c':
                pm[2]();
                break;
        }
    }
}


static char choice_menu() {
    const int st_size = 10;
    char st[st_size];
    //是否是a-e
    puts("To choose a function, enter its letter label: a|b|c|(q退出)\n");
    char chs[] = "a|b|c|q";
    while (s_gets(st, st_size) == NULL || strchr(chs, st[0]) == NULL) {
        printf("输入a|b|c|q\n");
    }
    return st[0];
}

void menua() {
    puts("你选择了菜单a");
}

void menub() {
    puts("你选择了菜单b");
}

void menuc() {
    puts("你选择了菜单c");
}